package com.ansion.basetool.observer;

import androidx.annotation.NonNull;

import com.ansion.basetool.preconditions.Preconditions;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;


/***
 * 监听的key支持多个
 * 这里需要注意的是如果调用了空构造方法，就要手动调用init设置需要监听的key，否则listener不会match上就不会有回调
 */
public class BaseListener {

    /***
     * 使用HashSet避免key重复
     */
    protected final HashSet<String> observeKeys = new HashSet<>();


    public BaseListener() {

    }

    public BaseListener(@NonNull String observeKey) {
        Preconditions.checkNotEmpty(observeKey);
        observeKeys.add(observeKey);
    }

    public boolean match(@NonNull String observeKey) {
        return this.observeKeys.contains(ListenerManager.KEY_ALL) || this.observeKeys.contains(observeKey);
    }

    /***
     * 如果要监听多个key，就直接传个list进来
     * @param keys
     */
    final public void init(List<String> keys) {
        Preconditions.checkNotEmpty(keys);
        observeKeys.clear();
        observeKeys.addAll(keys);
    }

    /***
     * 如果要监听多个key，就传多个key进来
     * @param keys
     */
    final public void init(String... keys) {
        Preconditions.checkNotEmpty(keys);
        observeKeys.clear();
        observeKeys.addAll(Arrays.asList(keys));
    }




}
